

import java.util.Scanner;

public class P1001 {

//	Description
//
//	Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems. 
//
//	This problem requires that you write a program to compute the exact value of Rn where R is a real number ( 0.0 < R < 99.999 ) and n is an integer such that 0 < n <= 25.
//	Input
//
//	The input will consist of a set of pairs of values for R and n. The R value will occupy columns 1 through 6, and the n value will be in columns 8 and 9.
//	Output
//
//	The output will consist of one line for each line of input giving the exact value of R^n. Leading zeros should be suppressed in the output. Insignificant trailing zeros must not be printed. Don't print the decimal point if the result is an integer.
//	Sample Input
//
//	95.123 12
//	0.4321 20
//	5.1234 15
//	6.7592  9
//	98.999 10
//	1.0100 12
//	Sample Output
//
//	548815620517731830194541.899025343415715973535967221869852721
//	.00000005148554641076956121994511276767154838481760200726351203835429763013462401
//	43992025569.928573701266488041146654993318703707511666295476720493953024
//	29448126.764121021618164430206909037173276672
//	90429072743629540498.107596019456651774561044010001
//	1.126825030131969720661201
	
	public static void main(String[] args){
		Scanner cin=new Scanner(System.in);
		String line;
        while((line=cin.nextLine())!=null){
        	if(line.equals(""))
        		break;
        	String[] res = line.split("\\s+");
        	ExactValue v=new ExactValue(res[0]), v1=new ExactValue(res[0]);
        	int n = Integer.parseInt(res[1]);
        	for(int i=0;i<n-1;i++)
        		v.multipleBy(v1);
        	v.print();
        }
	}
}

class ExactValue{
	int[] I;
	int[] D;
	public ExactValue(String a){
		String[] s = a.split("\\.");
		I = new int[s[0].length()];
		D = new int[s[1].length()];
		for(int i=0;i<s[0].length();i++){
			I[i]=s[0].charAt(i)-'0';
		}
		for(int i=0;i<s[1].length();i++){
			D[i]=s[1].charAt(i)-'0';
		}
	}
	
	public void print(){
		int i=0;
		while(i<I.length){
			if(I[i]!=0)
				break;
			i++;
		}
		while(i<I.length){
			System.out.print(I[i]);
			i++;
		}
		
		int d=D.length-1;
		while(d>=0){
			if(D[d]!=0)
				break;
			d--;
		}
		
		if(d>=0){
			System.out.print(".");
		}
		i=0;
		while(i<=d){
			System.out.print(D[i]);
			i++;
		}
		
		System.out.println();
	}
	
	public void multipleBy(ExactValue value){
		int ilen=I.length + value.I.length, dlen=D.length + value.D.length;
		int[] I_tmp = new int[ilen];
		int[] D_tmp = new int[dlen];
		
		int index;
		
		for(int d=value.D.length-1;d>=0;d--){
			for(int dd=D.length-1;dd>=0;dd--){
				index=d+dd+1;
				D_tmp[index]+=value.D[d]*D[dd];
			}
			for(int ii=I.length-1;ii>=0;ii--){
				index=d+1+ii-I.length;

				if(index>=0){
					D_tmp[index]+=value.D[d]*I[ii];

				}else{
					I_tmp[ilen+index]+=value.D[d]*I[ii];
				}
			}
		}
		for(int i=value.I.length-1;i>=0;i--){
			for(int dd=D.length-1;dd>=0;dd--){
				index=dd+1+i-value.I.length;

				if(index>=0){
					D_tmp[index]+=value.I[i]*D[dd];
					
				}else{
					I_tmp[ilen+index]+=value.I[i]*D[dd];
				}
			}
			for(int ii=I.length-1;ii>=0;ii--){
				index = ii+i+1-value.I.length-I.length;
				if(index>=0){
					D_tmp[index]+=value.I[i]*I[ii];
				}else{
					I_tmp[I_tmp.length+index]+=value.I[i]*I[ii];
				}
			}
		}
		
		int c=0;
		for(int i=D_tmp.length-1;i>=0;i--){
			c+=D_tmp[i];
			D_tmp[i]=c%10;
			c=c/10;
		}
		
		for(int i=I_tmp.length-1;i>=0;i--){
			c+=I_tmp[i];
			I_tmp[i]=c%10;
			c=c/10;
		}
		
		I = I_tmp;
		D = D_tmp;
	}
}
